package soundsystem;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;

/**
 * Created by jack on 18/5/28.
 * 这个类通过java代码定义了spring的装配规则
 * 这里的componentScan会去扫描backPackages下的所有的@Component的类
 */
@Configuration
//@ComponentScan(basePackages = "soundsystem") //通过这种方式直接设置了需要扫描的基础包，如果在下面配置还会产生对象
@PropertySource("classpath:soundsystem/app.properties") //通过 PropertySource来注解表示当前的从哪个文件中加载获得参数
public class CDPlayerConfig {
    @Autowired
    Environment env;

    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public CompactDisc compactDisc(){
        return new SgtPeppers(env.getProperty("disc.title"),
                env.getProperty("disc.artist"));
    }

    @Bean
    @Qualifier("electronic")
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public MP4 mp4(){
        return new MP4();
    }

    //这里可以在其他config中配置产生这个对象的方法
    @Bean
    @Qualifier("The_second")
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public MP4 mp4_2(){
        return new MP4();
    }
}
